{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 检验状态 S 下能否采取动作 a\n",
    "def check_action(width, height, S, a):\n",
    "    S_ = (S[0]+a[0], S[1]+a[1])\n",
    "    if S_[0] < 0 or S_[0] > height-1 or S_[1] < 0 or S_[1] > width-1:\n",
    "        return False\n",
    "    return True\n",
    "\n",
    "\n",
    "# 计算状态 S 下采取动作 a 后的状态 S'\n",
    "def move(width, height, S, a, wind, rand_move=False):\n",
    "    x, y = S[0]+a[0], S[1]+a[1]\n",
    "    x = max(x-wind[S[1]], 0)\n",
    "    if rand_move:\n",
    "        r = random.randint(1, 3)\n",
    "        if r == 1:\n",
    "            x = max(x-1, 0)\n",
    "        elif r == 2:\n",
    "            x = min(x+1, height-1)\n",
    "    return (x, y)\n",
    "\n",
    "\n",
    "# epsilon-贪心策略\n",
    "def eps_greedy(width, height, S, action_all, eps, Q):\n",
    "    actions = [a for a in action_all if check_action(width, height, S, a)]\n",
    "    p = [eps/len(actions) for a in actions]\n",
    "    q = [Q[S, a] for a in actions]\n",
    "    p[q.index(max(q))] += 1-eps\n",
    "    sum_p = 0\n",
    "    random_value = random.random()\n",
    "    for a, i in zip(actions, p):\n",
    "        sum_p += i\n",
    "        if sum_p >= random_value:\n",
    "            return a\n",
    "\n",
    "\n",
    "# Sarsa 算法\n",
    "def Sarsa(alpha, gamma, eps, width, height, wind, action_all, G, S_start, iterations, rand_move=False):\n",
    "    Q = {}\n",
    "    for i in range(height):\n",
    "        for j in range(width):\n",
    "            actions = [a for a in action_all if check_action(\n",
    "                width, height, (i, j), a)]\n",
    "            for a in actions:\n",
    "                if (i, j) == G:\n",
    "                    Q[(i, j), a] = 0\n",
    "                else:\n",
    "                    Q[(i, j), a] = random.random()\n",
    "    step_list = [0]\n",
    "    for it in range(iterations):\n",
    "        S = S_start\n",
    "        step = 0\n",
    "        while True:\n",
    "            if step == 0:\n",
    "                A = eps_greedy(width, height, S, action_all, eps, Q)\n",
    "            S_ = move(width, height, S, A, wind, rand_move)\n",
    "            R = -1\n",
    "            A_ = eps_greedy(width, height, S_, action_all, eps, Q)\n",
    "            Q[(S, A)] = Q[(S, A)]+alpha*(R+gamma*Q[(S_, A_)]-Q[(S, A)])\n",
    "            S, A = S_, A_\n",
    "            step += 1\n",
    "            if S == G:\n",
    "                break\n",
    "        step_list.append(step_list[-1]+step)\n",
    "    return step_list"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习6.9\n",
    "\n",
    "> *在有风的网格世界中向 $8$ 个方向移动（编程）* 重新解决有风的网格世界问题。这次假设可以向包括对角线在内的 $8$ 个方向移动，而不是原来的 $4$ 个方向。利用更多的动作，你得到的结果比原来能好多少？如果还有第 $9$ 个动作，即除了风造成的移动之外不做任何移动，你能进一步获得更好的结果吗？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1e31799f4c8>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "wind = [0, 0, 0, 1, 1, 1, 2, 2, 1, 0]\n",
    "G = (3, 7)\n",
    "S_start = (3, 0)\n",
    "iterations = 300\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"example6.5 directions=4\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.9 directions=8\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1), (0, 0)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.9 directions=9\")\n",
    "\n",
    "plt.xlabel(\"Time steps\")\n",
    "plt.ylabel(\"Episodes\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "图中蓝色线为例6.5的结果，橙色线为练习6.9中向 $8$ 个方向移动的结果，绿色线为练习6.9中向 $9$ 个方向移动的结果。图中曲线越陡，说明对应的模型能找到更优的路径。可以看到：\n",
    "1. 与原来 $4$ 方向移动相比，增加移动方向后，由于可行的决策变多，选择决策的难度增加，在训练初期，$8$ 方向移动与 $9$ 方向移动的效果不如 $4$ 方向移动的效果。\n",
    "2. 增加方向后灵活性增强，因此在训练后期，$8$ 方向移动与 $9$ 方向移动的效果明显优于 $4$ 方向移动的效果。\n",
    "3. $8$ 方向移动与 $9$ 方向移动相比，后者仅仅增加了“原地不动”这一决策，但采取这一决策这并不会缩短到目标点的距离，反而会干扰决策，其效果不如 $8$ 方向移动。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习6.10\n",
    "\n",
    "> *随机强度的风（编程）* 重新解决在有风的网格世界中向 $8$ 个方向移动的问题。假设有风且风的强度是随机的，即在每列的平均值上下可以有 $1$ 的变化。也就是说，有三分之一的时间你在和之前问题中一样，精确地按照每列下标给出的数值移动，但另有三分之一的时间你会朝上多移动一格，还有三分之一的时间你会朝下多移动一格。举个例子，如果你在目标状态右边一格，你向左移动，那么在三分之一的时间你会移动到目标上方的一格，在另一个三分之一的时间你会移动到目标上方的两格，在剩下的三分之一的时间你会正好移动到目标。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1e31860f6c8>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "wind = [0, 0, 0, 1, 1, 1, 2, 2, 1, 0]\n",
    "G = (3, 7)\n",
    "S_start = (3, 0)\n",
    "iterations = 1000\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"example6.5 directions=4\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.9 directions=8\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1), (0, 0)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.9 directions=9\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "step_list = Sarsa(0.5, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations, rand_move=True)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.10 directions=8\")\n",
    "\n",
    "plt.xlabel(\"Time steps\")\n",
    "plt.ylabel(\"Episodes\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "与练习6.9相比，本题中，我们增加了红色线，即添加随机强度的风，并增加了幕数以观察模型收敛后的效果。\n",
    "\n",
    "可以看到，当风的强度出现随机因素后，游戏难度提高，模型需要更多次迭代才能找到最优路径。但红色线的斜率居然比蓝色线更小，这是难以解释的，我们使用更小的 $\\alpha$ 与更大的迭代次数进行测试。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1e318616bc8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "wind = [0, 0, 0, 1, 1, 1, 2, 2, 1, 0]\n",
    "G = (3, 7)\n",
    "S_start = (3, 0)\n",
    "iterations = 10000\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0)]\n",
    "step_list = Sarsa(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"example6.5 directions=4\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "step_list = Sarsa(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.9 directions=8\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1), (0, 0)]\n",
    "step_list = Sarsa(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.9 directions=9\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "step_list = Sarsa(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations, rand_move=True)\n",
    "plt.plot(step_list, list(range(iterations+1)), label=\"exercise6.10 directions=8\")\n",
    "\n",
    "plt.xlabel(\"Time steps\")\n",
    "plt.ylabel(\"Episodes\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图是 $\\alpha=0.05$ 的结果，各模型的收敛速度变慢，但精度提高了，红色线的斜率与蓝色线相似，说明在前面的实验中，$\\alpha$ 过大导致了震荡。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习6.9与练习6.10拓展\n",
    "\n",
    "我们不妨用热力图绘制出算法计算出的最优解 $\\arg\\max_a Q(S,a)$\n",
    "\n",
    "注意，我们在每幕中随机初始化了起点 $S$，并减小了 $\\alpha$，增加了迭代次数，以确保收敛。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'exercise6.10 directions=8')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV8AAADxCAYAAABs1LSrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAcsklEQVR4nO3de5wlZX3n8c93emaYEeTmgAgDAgoqIIo2CBJviGhUVIhkxfW+m4mJKPrSoMialV3dKGtQV010FiFGiIQFWYwDjIyKBC/IcBEYBhQBZQSEAZGLMJc+3/xR1cmhpy/Vfc6pc6rn++ZVL/qcqnqeX3X3/Po5Tz31PLJNRETUa06/A4iI2Bwl+UZE9EGSb0REHyT5RkT0QZJvREQfJPlGRPRBkm9ERBtJr5J0s6RbJH2kZ/VknG9EREHSEPBz4BXAGuBK4FjbN3a7rrR8IyL+w0HALbZvtb0eOBt4fS8qmtuLQmOwSPo48HTbb+l3LO0kXQqcafs0Sf8ZeLvtI2qot7a6ovde+bItfd/9I5WOveq6dauAx9reWmp7advrXYA72l6vAV7QcZDjSPKNTUg6HDgFeAZwP/BB2+eMc9xLge8Bf2h7+z22vzbdOm2fBZw1o4AnIWl34DZgnu2NvayrE5K2B24Gbrb9R/2Op0nuu3+Eny7frdKxQ0/5xWO2hyc5ROO815O+2STfeBxJ+wD/BLwduATYBth2klPutL24xzHNHU2cs9ingdWkK3DaDLRodau4NcCuba8XA3d2q/B2+UF3SNLOks6TdK+k2yS9r23fhZL+tu31P0s6vfz6aZK+J+k+SWslnSVp27Zjb5f0V5Kuk/SIpK9KerKkiyQ9JGmFpO3KY3eXZElLJN0p6S5JH5wk5oMl/UjSA5J+VrZgR/034Cu2L7K90fZ9tn/Zpe/VKyTdJOn3kr5IWytD0jskXd722pLeI+kXwC/K954p6RJJ95d3o/+07fiFkv5W0q/K8i+XtBC4rDzkAUkPSzpknLpeKOnK8rwrJb2wbd+lkv6npB+W3/fvSFpU7lsg6czyZ/hAee6TZ/B9OQTYDzhjuucGGLPBI5W2Cq4E9pK0h6T5wJuAb/Ui7iTfDkiaA/wL8DOKvqKXA++X9MrykHcBb5V0WNnPeCBw/OjpwN8AOwPPovhr+/ExVfwJxV3XvYEjgYuAjwKLKH527xtz/MuAvYAjgI+U3QdjY94FWAZ8Atge+BBwnqQdykMOLo+7vkziZ5YfiSeyo6Tfln94Pitpy/EOKhPWeRTJfRHwS+DQScoFeANFf9s+ZbmXULTKdwSOBf5O0r7lsZ8Bng+8sLyuE4AW8OJy/7a2t7L94zFxbV9+P/4P8CTgVGCZpCe1HfZm4J1lvfMpvmdQfDrYhuJn9yTg3cCjZbl/Vybk8bbr2uofAr4EHEePPt5uDloV/5tK+QnrOGA5xSeRc2yv6kXMSb6dORDYwfb/sL3e9q3A/6X4a4ntuyn+QX4N+DzwNtsPlftusX2J7XW276X4R/+SMeV/wfZvbf8G+FfgCtvX2F4HnA8cMOb4k20/Yvt6ilbUsePE/BbgQtsX2m7ZvgRYCby63L8YeCtF4t8LWAh8YYLrvwl4LvAU4DCK5HfqBMe+GrjR9rm2NwCfA+6e4NhRf2P7ftuPAq8Fbrd9Rtkiv5oimb+x/CP4LuB427+xPWL7R+X3aSqvAX5h++tlud8or+vItmPOsP3zMo5zymsG2ECRdJ9e1nmV7QcBbP+l7W0n2PZvK/t9FD/XqyrEGuMwZsTVtkrlFf829rb9NNuf7FXc6fPtzFOBnSU90PbeEEWiHPVt4IsUN1LaP+ruSNHaehHwRIo/hL8bU/5v275+dJzXW405vv0u7a+AZ08Q8zGS2pPLPOD7beWeYfvnZZz/C1gxTjmjf1xGE+htkk6gaEX++TiH79wen21LumOc4ya6nqcCLxjzvZ4LfJ2iJb2AojU9XTtTfK/a/Yrik8yo9j8Sf+A/vu9fp2j1nl12GZ0JnFT+cZmSpJ0pku/zZxB3tGk18ENDkm9n7gBus73XJMd8kuLjyx6Sji1bVlB0ORjY3/Z9kt5AkaQ7sStFqw1gN8a/UXAH8HXbfzZBGdcx84+/Zvy7xQB30XYjQ5J4/I2NicobdQfwA9uvGHtQ2fJ9DHgaRRfQRGWM506KxN5uN+DiKc6jTLInAyerGFVxIcWIha9K+jLFp4zx/Mr2vhRjSp8C3Fh8O1gILJR0N7CLXa2TcnNnYKSByTfdDp35KfCgpA+XN3yGJO0n6UAASS+m6Ct8W7l9oexzhaK1+zDFjaBdgL/qQjwfk/SEsh/0ncA/j3PMmcCRkl5ZxrtA0ksljY5YOAN4p6Q9JT0B+DBF630T5Xm7qbAr8CngggliWwbsK+loSXMpWnw7TePavg3sLemtkuaV24GSnmW7BZwOnKriBuhQeWNtC+Beir7fPSco98Ky3DdLmivpPwH7THTNY67/ZZKeXfbbPkjRDTECYPvdZR/zeNtoP/VFwO4U3RjPBf4auAZ4bhLv9LRwpW2QJPl2oPwHciTFP5zbgLXAacA2krYG/hE4ruyHvBz4KnBG2eo7GXge8HuKxPTNLoT0A+AW4LvAZ2x/Z5yY76B4YuejFInpDorEP6fcf3oZ9xUUH7/X0XZjrxwx8KLy5fOAHwOPAD8CbmDTm4Cj9a4FjqFI0PdR9Cf/sOqFlX3lR1D0p99J0RXwaWCL8pAPAddT3K2+v9w3x/YfKD59/LC82XXwmHLvo+hP/mAZ1wnAa8t4p7ITcC5F4l1N8f0/cxrXtM723aMbxe/ChvLrqMjABrvSNkgyt8MsoHEeJIjYXOz/nHleduGiSsfutvjuq6Z4yKI26fONiGYzjDSwDZnkGxGNVjzh1jxJvrOA7duZeJRBxCwnRhr465/kGxGNVtxwS/IFYP6chV449MReFL2puUP11AN4bj2DQzxU3y9Sq866avxT7/p+Leqra6i+jk3VVNeGex9g5MFHOvolLMb5JvkCsHDoiRyy6JheFL2p7beppx5g4/bjTlvQdeu2m19LPQDrtqlvtOGji+qra/1k87B12Yat6klUI1vXN5Bl3jZVnszu3JoTv9yVclpp+UZE1Cst34iIPjBipIHPiyX5RkTjpdshIqJmRqyv8w5rlzSvrR4R0aZ4yGJOpa0Tkv63ipVYrpN0vtpWnpmJJN+IaLyR8kGLqbYOXQLsV06G/3PgxE4KS7dDRDSaLUbc+3bkmFkCfwK8sZPyknwjovFa9Q81exfjz5ddWZJvRDRaccOtcipbJGll2+ultpeOvpC0gvEn+T/J9gXlMScBG4GzZhgyUDH5SnoVxQKQQ8Bptj/VSaUREd0yesOtorWTzedre5MVv9tJejvF5Psvd4eToU+ZfNuWtn4FsAa4UtK3bN/YScUREd0yUsM437IR+mHgJeUKKR2p0vI9CLilXBYdSWdTLEOT5BsRfVfjE25fpFi26pJywdOf2H73TAurknx34fFLeK8BXjD2IElLgCUAC+aMXdE8IqJ3WvWMdnh6N8urknzHa89v0tdRdlovBdhm3o4NXNQjIpqomFineY8sVEm+a4Bd214vplg9NiKi74zY0MDHi6sk3yuBvSTtAfyGYunuN/c0qoiIimxqecii26ZMvrY3SjoOWE4x1Ox026t6HllERCXqx0MWHas0ztf2hcCFPY4lImLazCxt+UZEDLrZesMtImJgGWUy9YiIuhVLxzcvlTUv4oiIx+nKXL21S/KNiEYz9Tzh1m1JvhHReGn5RkTUzFZavn3RqnEaiZrqmrOxvmtqza2vxaAaf1Qaqa+u2rTq+1ltv3XHMyZWctdQq+Myihtus/Px4oiIAVbPGm7dluQbEY1W3HBLn29ERO2a+IRb8yKOiGgz+oRbla0bJH1IkiUt6qSctHwjovGmsYBmRyTtSrGe5a87LSvJNyIazYYNrdo+xH8WOAG4oNOCknwjotGKbofKyXeRpJVtr5eWS6BNSdLrgN/Y/lm5gGZHknwjovGm8YTbWtvDE+2UtALYaZxdJwEfBY6YfnTjS/KNiEbr5lAz24eP976kZwN7AKOt3sXA1ZIOsn33TOqaMvlKOh14LXCP7f1mUklERO/0/vFi29cDO/57jdLtwLDttTMts0rE/wC8aqYVRET0Wqtcx22qbZBUWUDzMkm79z6UiIjpK0Y71Du3g+3dOy0jfb4R0Wib/TJCkpYASwAWzNmqW8VGRExp0LoUquha8i3Hyi0F2GbejjVOHhgRm7NMrBMR0SdNnEx9yoglfQP4MfAMSWsk/ZfehxURUY0tNnpOpW2QVBntcGwdgUREzFS6HSIiapY+34iIPknyjYio2WY/zjciol8263G+ERH9YMPG+iZT75ok34hovHQ7RETULH2+ERF94iTfPphT4ze9prpa8+q7JrVqq4oG/vuoRvVMZTJvu8dqqQdgz23uq6WeW4Y2dqWcJt5wa14vdUREG7vo862ydUrSeyXdLGmVpFM6Kav5Ld+I2MyJkRpGO0h6GfB6YH/b6yTtONU5k0nyjYjGq6nP9y+AT9leV9TpezopLN0OEdFoo3M7VOx2WCRpZdu2ZBpV7Q28SNIVkn4g6cBO4k7LNyKazUW/b0VrbQ9PtFPSCmCncXadRJEvtwMOBg4EzpG0pz2N2tsk+UZE43VrtIPtwyfaJ+kvgG+WyfanklrAIuDemdSVboeIaDSXN9yqbB36/8BhAJL2BuYDa2daWFq+EdF4M/vgP22nA6dLugFYD7x9pl0OkOQbEbNAHaMdbK8H3tKt8qqs4barpO9LWl0OLD6+W5VHRHTKLpJvlW2QVGn5bgQ+aPtqSU8ErpJ0ie0bexxbREQls3JiHdt3AXeVXz8kaTWwC5DkGxEDoaY+366aVp+vpN2BA4Arxtm3BFgCsGDOVl0ILSJiaka0GjiZeuWIJW0FnAe83/aDY/fbXmp72Pbw/DkLuxljRMSkXHEbJJVavpLmUSTes2x/s7chRURMg2fpfL6SBHwVWG371N6HFBExTYPWrK2gSrfDocBbgcMkXVtur+5xXBERlc3KoWa2L4cGThMfEZsFA61W81JUnnCLiGYzjVyjKsk3Ihpv1o/zjYgYSEm+ERF1G7ybaVUk+UZE86XlGxFRM4MbONqheQ9ER0RsQhW3DmqQnivpJ+WzDislHdRJeUm+EdF89UzucApwsu3nAn9dvp6x3nQ7CIqnknvPNdUD4DnN+2gzpRovSTX2y7nGZsUtb/5yLfW8+PqjaqkHYM8tZ7w02bRsMWdjdwqq53fLwNbl19sAd3ZSWPp8I6LZpveQxSJJK9teL7W9tOK57weWS/oMRa/BC6sHuakk34hovGk8ZLHW9vBEOyWtAHYaZ9dJwMuBD9g+T9KfUkw4NuFS81NJ8o2I5uvSaAfbEyZTSf8IjK5h+f+A0zqpKzfcIqLx5Gpbh+4EXlJ+fRjwi04KS8s3IpqtvmUq/gz4vKS5wGOUy6bNVJJvRDScapnVrJxe9/ndKi/JNyKaL48XR0T0QavfAUxfkm9ENNtsnUxd0gLgMmCL8vhzbf/3XgcWEVFVnU9PdkuVlu864DDbD5dLyF8u6SLbP+lxbBER1czG5GvbwMPly3nl1sBLjYgYHJUespA0JOla4B7gEttXjHPMknKatZXrW492O86IiAnV9JBFV1VKvrZHymnUFgMHSdpvnGOW2h62PTx/zsJuxxkRMT5TPF5cZRsg03q82PYDwKXAq3oSTUTETNQzn29XTZl8Je0gadvy64UUs/jc1OvAIiKqamK3Q5XRDk8BviZpiCJZn2P7270NKyJiGgYssVZRZbTDdcABNcQSETEzszH5RkQMskHsUqgiyTcimm/ARjJUkeQbEY3XxJZvVrKIiOarYaiZpGMkrZLUkjQ8Zt+Jkm6RdLOkV1YpLy3fiGi2+vp8bwCOBr7S/qakfYA3AfsCOwMrJO1te2SywtLyjYjmq6Hla3u17ZvH2fV64Gzb62zfBtwCHDRVeWn5RkTjqfpk6oskrWx7vdT20g6r3wVon+VxTfnepJqffFXjXU7X89nGdX4eaeCNiirqvAHzyw0PT31QF5zxzK/XUg/AlY/tWks9C+esr6WeNmttD0+0U9IKYKdxdp1k+4KJThvnvSl/A5uffCMiuvTH1vbhMzhtDdD+12oxxTLzk0qfb0Q0W8V5HXr4aehbwJskbSFpD2Av4KdTnZTkGxHNV89Qs6MkrQEOAZZJWg5gexVwDnAjcDHwnqlGOkC6HSJiNqihj9/2+cD5E+z7JPDJ6ZSX5BsRjSamNdphYCT5RkSzZWKdiIg+SfKNiOiDJN+IiPql2yEioh8amHwrj/OVNCTpGklZvy0iBoeL0Q5VtkEynYcsjgdW9yqQiIgZm41LxwNIWgy8Bjitt+FERExfE5eOr9ry/RxwAjBhw13SEkkrJa1c33q0K8FFRFQyG1u+kl4L3GP7qsmOs73U9rDt4flzFnYtwIiISVVNvAOWfKuMdjgUeJ2kVwMLgK0lnWn7Lb0NLSJiamLwuhSqmLLla/tE24tt706xTtH3kngjYpA0sc8343wjovkGLLFWMa3ka/tS4NKeRBIRMVMNTL6ZTD0imq2mlSwkHSNplaSWpOG2918h6SpJ15f/P6xKeel2iIjmq6flewNwNPCVMe+vBY60faek/YDlbBarF0fEZq+OR4dtrwbQmBXTbV/T9nIVsEDSFrbXTVZekm9ENN40uhQWSVrZ9nqp7aVdDOVPgGumSryQ5BsRTTe9ByjW2h6eaKekFcBO4+w6yfYFkxUsaV/g08ARVQJJ8o2I5utSn6/tw2dyXjn/zfnA22z/sso5Sb4R0Wj9fsJN0rbAMuBE2z+sel7zk+/GkdqqUquen/CcjfX9JnmWDjb8l/96Sn11PbxfLfX8YWSLWuoBaKGpD+qCda2fd6WcOv5tSjoK+AKwA7BM0rW2XwkcBzwd+Jikj5WHH2H7nsnKa37yjYjNW02T5tg+n6JrYez7nwA+Md3yknwjovEGbd6GKpJ8I6L5knwjIuqXlm9ERD8k+UZE1MyDtzJxFUm+EdFo/R7nO1NJvhHRfG5e9k3yjYjGm7UtX0m3Aw8BI8DGySamiIio1QCuTFzFdFq+L7O9tmeRRETMUG64RUT0QROTb9VpVQx8p1yfaEkvA4qImBZT3HCrsg2Qqi3fQ8v1iXYELpF0k+3L2g8ok/ISgAVDW3U5zIiIiTXxhlullq/tO8v/30Mxq89B4xyz1Paw7eH5cxZ2N8qIiMm44jZApky+kraU9MTRrymWyLih14FFRFQx+pBFr5eO77YqLd8nA5dL+hnwU2CZ7Yt7G1ZEREU2alXbOiHpGEmrJLUkbTLcVtJukh6W9KEq5U3Z52v7VuA5M4g1IqIe9bRqbwCOBr4ywf7PAhdVLSxDzSKi8eroUrC9GkDadIklSW8AbgUeqVreLF3BKyI2GwZarrbBIkkr27aOh86W98I+DJw8nfPS8o2I5qve8l072fQIklYAO42z6yTbF0xw2snAZ20/PF6reCJJvhHReN3qdrB9+AxOewHwRkmnANsCLUmP2f7iZCcl+UZE49WxdPxEbL/o3+OQPg48PFXihfT5RkTTVX3AosP8LOkoSWuAQ4BlkpZ3Ul5avhHRaMVDFr1v+do+n+IJ38mO+XjV8pJ8I6L5GjirWfOT79yh+uqaxp3MTrTm1lMPUDQbavLR486qra5LHnlGbXUduVU9T9tfv368m/C9ccOji2urqxvqaPl2W/OTb0Rs3gZw0pwqknwjouE6n7ehH5J8I6L50u0QEVEzN3MZoSTfiGi+tHwjIvqgebk3yTcimk+t5vU7JPlGRLOZPGQREVE34UY+ZFFpYh1J20o6V9JNklZLOqTXgUVEVGZX2wZI1Zbv54GLbb9R0nzgCT2MKSJiegYssVYxZfKVtDXwYuAdALbXA+t7G1ZEREUN7fOt0u2wJ3AvcIakaySdVq5Z9DiSloyui7S+9WjXA42ImIharUrbIKmSfOcCzwP+3vYBFKtzfmTsQbaX2h62PTx/zsIuhxkRMZGK/b0ddk1IOkbSKkktScNj9u0v6cfl/uslLZiqvCrJdw2wxvYV5etzKZJxRET/mbpuuN0AHA1c1v6mpLnAmcC7be8LvBTYMFVhU/b52r5b0h2SnmH7ZuDlwI0zCDwiojdq6FGwvRpgnBWKjwCus/2z8rj7qpRXdbTDe4GzypEOtwLvrHheRETP9Xmc796AyzXddgDOtn3KVCdVSr62rwUmXOs+IqKvqiffRZJWtr1eanvp6AtJK4Dxlgw5yfYFE5Q5F/gj4EDgD8B3JV1l+7uTBZIn3CKi2WwYqdzvsNb2hA1J24fPIII1wA9srwWQdCHFfbFJk2+Wjo+I5uvvE27Lgf0lPaG8+fYSKtwXS/KNiOarZ6jZUZLWAIcAy8o+Xmz/DjgVuBK4Frja9rKpyku3Q0Q0m4Ea1nCzfT5w/gT7zqQYblZZkm9ENJzBg/X0WhVJvhHRbGY6N9wGRpJvRDTfbJzVLCJi4CX5Fh7ccO/ai+/60q+medoiYO20K7tr2mfUbWbXNdhmdE3HntGDSLprwH9Wd8/kpBle07UzqWsmntp5EYM3UXoVPUm+tneY7jmSVk42+LmpZuN1zcZrgtl5XbPxmjZhYMCmi6wi3Q4R0Xxp+UZE1G1ajxcPjEFKvkunPqSRZuN1zcZrgtl5XbPxmh7P4AaO85Ub2FyPiBi1zdwdfMjWb6h07PLfnXbVoPSBD1LLNyJiZhrYiEzyjYhmsxs52qHvs5pJepWkmyXdImmThTmbSNKukr4vaXW5oN7x/Y6pWyQNlatYf7vfsXSLpG0lnSvppvJndki/Y+oGSR8of/9ukPSNKos6NlZ/p5Sckb4mX0lDwJeAPwb2AY6VtE8/Y+qSjcAHbT8LOBh4zyy5LoDjgdX9DqLLPg9cbPuZwHOYBdcnaRfgfcCw7f2AIeBN/Y2qV4xHRiptg6TfLd+DgFts32p7PXA28Po+x9Qx23fZvrr8+iGKf8y79DeqzklaDLwGOK3fsXSLpK2BFwNfBbC93vYD/Y2qa+YCC8sJvp8A3NnneHpjdErJKtsA6Xfy3QW4o+31GmZBkmonaXfgAOCK/kbSFZ8DTqCWtWJrsydwL3BG2Z1ymqQt+x1Up2z/BvgM8GuKh/B/b/s7/Y2qh9yqtg2QfiffTdZgpvg7NitI2go4D3i/7Qf7HU8nJL0WuMf2Vf2OpcvmUqy39fe2DwAeARp/70HSdhSfIvcAdga2lPSW/kbVGwbccqWtE5KOKfvQW5KG296fJ+lrkq4v7xmcWKW8fiffNcCuba8XM0s+GkmaR5F4z7L9zX7H0wWHAq+TdDtF99BhkqY1c/+AWgOssT36yeRcimTcdIcDt9m+1/YG4JvAC/scU2/YdbV8bwCOBi4b8/4xwBa2nw08H/jz8hPvpPqdfK8E9pK0h6T5FDcEvtXnmDomSRR9iKttn9rveLrB9om2F9veneLn9D3bjW9J2b4buEPSM8q3Xk6FxQ8b4NfAweWijqK4rsbfSJxIHTfcbK+2ffN4uyg+WcwFFgLrgSk/6fZ1nK/tjZKOo1j9cwg43faqfsbUJYcCbwWulzQ6N99HbV/Yx5hiYu8FziobALcC7+xzPB2zfYWkc4GrKUbfXMMsfdT4IX63fIXPXVTx8AWSVra9Xmq70+/LuRRdPHdR3Nj8gO37pzopjxdHRJQkrQB2GmfXSbYvKI+5FPiQ7ZXl60OBvwTeAWwH/Cvwx7ZvnayuPOEWEVGyffgMTnszxTjxDcA9kn4IDFN8ippQv/t8IyKa7tcUN6BVDlM8GLhpqpOSfCMiKpB0lKQ1wCHAMknLy11fAraiGA1xJXCG7eumLC99vhER9UvLNyKiD5J8IyL6IMk3IqIPknwjIvogyTciog+SfCMi+iDJNyKiD/4N6f2RZCx75woAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWgAAADxCAYAAADm+y3qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAfN0lEQVR4nO3dfbwdVX3v8c+XPJAYCAkGeUhQQFELVrBNUeTWWx4KlFoRKhW0iAKvlLa02vZWpbSvUh/urVa03laFCHjplYpeMIUC8mSlFFuBIIjEQAkPSgiI4VmwSU7O9/4xE9we9j57zjn7zJ69+b55zSt7ZtbMWrP34bfXXmvNLNkmIiKaZ6t+FyAiItpLgI6IaKgE6IiIhkqAjohoqAToiIiGSoCOiGioBOiIiBaSDpd0l6Q1kj7YZv/Wkr5c7r9R0m7TVZYE6IiIkqQZwGeAXwP2Ao6TtNeYZCcBj9t+BfAp4GPTVZ4E6IiIn9oPWGP7XtsbgQuBI8ekORI4v3x9EXCwJE1HYWZOx0lj+kn6M2AP2yf3uyy9IOk64Iu2z5H0TuAE24fWkG9tecX0OOzAeX70sc2V0t5y+4ZVwH+1bFpue3nL+mLggZb1tcDrx5zmuTS2RyQ9CbwYWD/BoneVAD2gbP/PXpxH0g7Ap4EjAANX2H5nh7QfBt4K/BzwEdtnjNn/DuB/AYuAa4ATbT820TLZvgC4YKLHdVO2Fd4HzLI9Mp15TYak7YHPAQeXm64Cftf2U/0rVfM9+thmbrrqpZXSztj57v+yvXScJO1qwmOfh1ElTU+kiaOhJNX15flV4GHgZcBLgE+Mk3YN8H7g8rE7JO0NnA0cD+wIPAt8tteFrfF96YePAAuBPYCXU7yPZ/SzQIPAwGjF/ypYC+zasr4EWNcpTfn3uB0w4YpIFQnQkyBpF0kXS/qRpPsk/WHLviskndmy/mVJ57WsnyhptaTHJV0l6WUt+yzp9yXdDdxdbttb0jWSHpP0w7JpA0lnSPpi+XqOpC9KelTSE5JulrRjuW87SedKekjSg5I+UnaEIOlQij+0P7X9pO1Ntm/tdN22z7f9NeDpNrvfCfyz7ett/xj4C+BoSdt2eA9/VdKdkp6U9Pe01EokvVvSDV3el1e3vC93SfqtlvRzJZ0p6fvl+W+QNBe4vkzyhKQfS9q/TV5vLN+/J8t/39iy7zpJH5b0TUlPS7pa0qJun8EE7A78k+2nbD8JrAD2nuA5XnCM2eTNlZYKbgb2lLS7pNnAscClY9JcCpxQvn4b8C+epqfOJUBPkKStgH8GvkPRFnUw8D5Jh5VJTgSOl3RQ2b75S8B7y2PfCvwZcDSwA/BvwJfGZPFWijavvcrgdi1wJbAL8Arg622KdQLFt/iuFG1hpwA/KfedD4yUx74OOBTY0m79BuAu4PwysNws6b9P4m2BIpB8Z8uK7XuAjcArxyYsg9rFwJ9TNIfcAxzQ5fyt78s8iiaUf6So9R8HfLasxUPxK+AXgTcC21PU+keBN5X7F9jexvZ/jCnX9hS/Dv43xfv4SeBySS9uSfYO4D1lvrOB/1Fu7/gZSPpsGbTbLbe3nPszwJslLZS0EPhN4Gtd3pegdzXosunrVIrmpdXAV2yvkvQhSW8pk50LvFjSGuCPgecNxesZ21kmsFAEiR+M2XYa8IWW9aMpOhHWA/+tZfvXgJNa1reiaAp4Wblu4KCW/ccBt3YoxxkUnWpQfCn8O/DaMWl2BDYAc8ec8xvl6+VlnicBsyhqC08Ai7q8B18Ezhiz7evAKWO2PQj8Spvj3wV8q2VdFD8bTy7X3w3c0LJ/7PvyduDfxpzzbOAvy/f0J8A+bfLdrTzXzJZtz+VF0Txz05hj/gN4d/n6OuDPW/b9HnDleJ/BBP+2dqH4Qh4tl2uA2f3+m2/6su9rZ/nJB3ettAAr+13eiSypQU/cy4BdWmtBFLXi1p+zlwEzgLts3zDm2E+3HPcYRXBa3JKmtQd5V4raZTf/l+Ib/0JJ6yR9XNKsMr9ZwEMteZ5NUfuDIpDdb/tcF80bF5b5d6vNtvNjYP6YbfNp3xyyCy3X6SI6PdAmXavW/S8DXj/mM3gnsBNFjXwO1d63duX6/pht3+dnP5+HW14/C2xTvu70GUzE/wP+E9iW4r27h+LLMLoYxZWWQZMAPXEPAPfZXtCybGv7iJY0H6X4ebSzpOPGHPs7Y46da/vfW9J4TPqXdytQGVz/yvZeFD/r30xRS32Aoga9qCW/+ba3NAXcTu96n1cB+2xZkbQHsDVFwBnrIVo6YiSJn+2YaWfs+/KvY97HbWz/LsWvlv+i/fvW7VrXUQT/Vi+l+CUwfuE6fwZIOqts8263rGo5zT7A2bafcdGOfxbF6JoYh4HNuNIyaBKgJ+4m4ClJHyg7o2ZIeo2kXwKQ9CaKNsp3lcvfSdpSAzsLOG1LW2nZgXfMOHldBuwk6X0qbi/dVtLYMZlIOlDSz5edf08Bm4DNth8CrgbOlDRf0laSXt7SzrwCWCjphPI63kZRW/xmu8JImiVpDsXfzcyyY2xGufsC4Dck/XLZRvwh4Ku229WgLwf2lnS0il7wP6So/VZ1GfBKSceXZZol6Zck/ZztUeA84JMqOnNnlJ2BWwM/omg62KPDea8oz/sOSTMlvZ3ibrLLuhWo02cAYPuU8guk3dLaCXgzcHL5dzUXWEZLu350lhp0AGB7M/AbwL4UY2rXA+cA20maD/wDcKrtB8vmjXOBL0iS7RUUt4VeKOkp4A6KW0o75fU08Ktlfg9TjGA4sE3SnSjuaHqKoub+r/z0p/G7KDqzvgc8XqbbuTz/Y8BbKDq6nqTo7DjS9np4ruZ3Vks+n6doFjkOOL18fXx5rlUUHWMXAI9Q/Ez/vQ7XtR44Bvhr4FFgTzp8KYzzvhxK0Wa+juK9+RhFjZ3yer5LEfAeK/dtZftZil833yybRt4w5ryPUtR8/6Qs1/uBN295P7oY7zOo6kSKdvK1FLX2PSjayGMcBjbZlZZBIw9goSMitnjtPrN8+RWLKqV96ZKHb/H4N6o0yjAP+o+IFwLD5iGtZyZAR8RAK+4kHE4J0BEx4MTmto/HGHwJ0BEx0IpOwgToymbPfJHnzl4wHad+YRitr0HNM+r7w/bM+gYN1XldozO6p+kF15QP0P55bdNg05OPMfLsM1PKrRgHnQBd2dzZC3jDK06ajlM/X50DBWtq6NLGTfVkBIzOn1tbXhu3n1NbXhsW1PfjcMO29QSHjdvVF4Q21/RR3X/uJ3tyntHUoCMimic16IiIhjJi85Dec5cAHREDL00cERENZMTGWntQ65MAHREDrbhRJU0cERGNlE7CiIgGssVmpwYdEdFIozXUoCX9DcWjfzdSzHbzHttPtEl3P8VMQpuBkak8PW84v3Yi4gWj6CScWWmZomuA19h+LcVMQaeNk/ZA2/tO9dGmlQK0pMNVTG2/RtL0zWAbETFBWzoJqyxTyse+2sWs3wDfApZMtezddC1xOYXPZyhm/tgLOE7SXtNdsIiIqjZblZYeOhH4Wod9Bq6WdIukZVPJpEqdfz9gje17ASRdCBxJMYVSRERfTfBOwkWSVrasL7e9fMuKpGtpPz/m6bYvKdOcDoxQTO/WzgG210l6CXCNpDttX1+1gK2qBOjF/OyU92uBdhOXLqOY5JI5s+ZPpiwREZMyWn0Ux/rx2oVtHzLewZJOoJi38mB3mC/Q9rry30ckraCo5E4qQFe5qna/C55XMNvLbS+1vXT2zHmTKUtExIQVD0vaqtIyFZIOBz4AvKWcgLhdmnmStt3ymmJy4zsmm2eVGvRaYNeW9SUUMylHRPSdEZvqudX77ylmjr9GEsC3bJ8iaRfgHNtHADsCK8r9M4F/tH3lZDOsEqBvBvaUtDvFVPDHAu+YbIYREb1kU8uNKrZf0WH7OuCI8vW9wD69yrNrgLY9IulU4CpgBnCe7VW9KkBExNSolhtV+qHSyG3bVwBXTHNZIiImzNRTg+6H3OodEQMvD+yPiGggozywPyKiiQxsmvpzNhppOK8qIl5AlOdBR0Q0kZnQnYQDJQE6IgZeatAREQ1kKzXoifAMsXm7OdNx6ufnNbO+b06rnrxmPdb2Nv9psXnerNryGlo1xYaRufXkA7BpftvnAPXcaA/u0C46CTOrd0REA2VOwoiIRio6CdMGHRHRSLmTMCKigXInYUREg011QtimSoCOiIFmw6bRBOiIiMYpmjgSoCMiGil3EkZENNAwD7Pr+rtA0nmSHpE06ZlpIyKmT9HEUWWZUi7SGZIelHRbuRzRId3hku6StEbSB6eSZ5US/x/g8KlkEhExnUbLeQm7LT3wKdv7lsvzpgGUNAP4DPBrwF7AcZL2mmxmVSaNvV7SbpPNICJiOhWjOBrzLI79gDXl7N5IuhA4EvjeZE42nF2fEfGCseVGlSoLsEjSypZl2QSzO1XS7WXT78I2+xcDD7Ssry23TUrPOgnLC10GMGfr7Xp12oiIribQfLHe9tJOOyVdC+zUZtfpwOeAD1P0S34YOBM4cewp2hw76UcD9ixA214OLAeYv+3iep5VGBEveL0cxWH7kCrpJH0euKzNrrXAri3rS4B1ky1PmjgiYuDVNIpj55bVo4B2I9tuBvaUtLuk2cCxwKWTzbPKMLsvAf8BvErSWkknTTaziIhes8WIt6q0TNHHJX1X0u3AgcAfAUjaRdIVRVk8ApwKXAWsBr5ie9VkM6wyiuO4yZ48IqIOddyoYvv4DtvXAUe0rF8BPG8I3mTkTsKIGGjDfCdhAnREDLwE6IiIBsoD+yMiGqxHt3E3TgJ0RAw0G0bywP6IiGZKE0dERAOlDToiosGcAF2dtxIj8+qJ/aMz6/tgthqp5xEjI9vNrSUfgI3bzqotrw0L6msnnLGxtqzYPLuev8GRbep7xM3mF43Wk1GP/iTSSRgR0UB22qAjIhpKbM4ojoiIZkobdEREA+VZHBERTeWiHXoYJUBHxMDLKI6IiAZyOgkjIporTRwREQ31gh3FIWlX4B8opiIfBZbb/vR0Fywiogq7ngAt6cvAq8rVBcATtvdtk+5+4GlgMzBie+lk86xSgx4B/sT2tyVtC9wi6Rrb35tsphERvVTTnIRv3/Ja0pnAk+MkP9D2+qnmWWXS2IeAh8rXT0taDSwGEqAjohHqbIOWJOC3gIOmO68JtUFL2g14HXBjm33LgGUAW89Z0IOiRUR0Z8Ro9VEciyStbFlfbnv5BLP8ZeCHtu/uWCS4WpKBsydx/udUDtCStgEuBt5n+6nnlagoxHKAbbdbMqR9qhHRRBMIOOvHaxOWdC1Ff9tYp9u+pHx9HPClcfI4wPY6SS8BrpF0p+3rqxfxpyoFaEmzKILzBba/OpmMIiKmRQ87CW0fMt5+STOBo4FfHOcc68p/H5G0AtgPmFSA7vq7oGxvORdYbfuTk8kkImJaueIydYcAd9pe226npHnlYAokzQMOBe6YbGZVGm4OAI4HDpJ0W7kcMdkMIyJ6zValpQeOZUzzhqRdJF1Rru4I3CDpO8BNwOW2r5xsZlVGcdwAQ3qje0QMPAOjo/WEKNvvbrNtHXBE+fpeYJ9e5Zc7CSNisBl4od5JGBHRdHkWR0REUyVAR0Q0Uc86ABsnAToiBl9q0BERDWRwTaM46pYAHRFDIAE6IqKZ0sQxAYLNs+uZI2zTvPrmIhuZW8+39Kxn6/ve/Mn29dU8NiysL69nX7mhtrzuO+zcWvJ59Q3H15IPwKyaOt00a7Q3J0qAjohooNyoEhHRXLlRJSKiqTKKIyKimZQadEREA/XuWc+NkwAdEQNO6SSMiGis1KAjIhqqR8OpmyYBOiIG2xCPg64yaewcSTdJ+o6kVZL+qo6CRURUJVdbppSHdEwZA0clLR2z7zRJayTdJemwDsfvLulGSXdL+rKk2d3yrHKf9AbgINv7APsCh0t6Q5ULioioRT2zet8BHA1c37pR0l4Uk8nuDRwOfFbSjDbHfwz4lO09gceBk7pl2DVAu/DjcnVWuQxpk3xERHu2V9u+q82uI4ELbW+wfR+wBtivNYEkAQcBF5Wbzgfe2i3PSk8akjRD0m3AI8A1tm9sk2aZpJWSVm7a+EyV00ZE9MQEmjgWbYlT5bKsB9kvBh5oWV9bbmv1YuAJ2yPjpHmeSp2EtjcD+0paAKyQ9Brbd4xJsxxYDrDtgiWpYUdEPcxEbvVeb3tpp52SrgV2arPrdNuXdDqsQ6kmmuZ5JjSKw/YTkq6jaGe5o0vyiIh69KhKaPuQSRy2Fti1ZX0JsG5MmvXAAkkzy1p0uzTPU2UUxw5lzRlJc4FDgDsrFjwiYtrVMYpjHJcCx0raWtLuwJ7ATa0JbBv4BvC2ctMJQKca+XOqtEHvDHxD0u3AzRRt0JdNoPAREdOrhlEcko6StBbYH7hc0lUAtlcBXwG+B1wJ/H7ZLIykKyTtUp7iA8AfS1pD0SbddaaHrk0ctm8HXjeJ64mIqEcNvV62VwArOuz7KPDRNtuPaHl9L2NGd3STOwkjYqBNc/NFXyVAR8TgywP7IyKaKTXoiIimSoCOiGigtEFHRDRYAnRERDMpD+yvzgLXFPpHZ9WTD8CmefX0FP9kh/p6pDcsrK/qMbLLhtry2ma7n9SW13t+8Mu15LP/S++vJR+Abz+8pJZ8NKxtEz2SGnREDL4hjfMJ0BEx2NJJGBHRYAnQERENlQAdEdE8IqM4IiKaKW3QERENlgAdEdFQCdAREc2UJo6IiKYa0gBdZU5CACTNkHSrpMxHGBHN4WIUR5VlKiQdI2mVpFFJS1u2/6qkWyR9t/z3oA7HnyHpQUm3lcsR7dK1mkgN+r3AamD+BI6JiJh+9dSg7wCOBs4es3098Bu210l6DXAVsLjDOT5l+xNVM6xUg5a0BPh14JyqJ46IqMuWeQm7LVNhe7Xtu9psv9X2unJ1FTBH0tZTy61QtYnjb4H3Ax1/JEhaJmmlpJUjG57pRdkiIqpxxQUWbYlT5bKsxyX5TeBW250e3XiqpNslnSdpYbeTdW3ikPRm4BHbt0j6lU7pbC8HlgNss3DJkDbZR0Tj/DT4VrHe9tJOOyVdC+zUZtfpti8Z78SS9gY+BhzaIcnngA9TlPbDwJnAieOds0ob9AHAW8oG7TnAfElftP3bFY6NiJhWonfD7GwfMqkyFM3AK4B32b6nw7l/2JL+80DXARddmzhsn2Z7ie3dgGOBf0lwjogmqaMNumPe0gLgcuA0298cJ93OLatHUXQ6jqvyMLuIiMaq3gY9aZKOkrQW2B+4XNJV5a5TgVcAf9EyhO4l5THntAzJ+3g5FO924EDgj7rlOaEbVWxfB1w3kWMiIqZdDb1etldQNGOM3f4R4CMdjjm55fXxE80zdxJGxGDL0+wiIhosAToiopnywP6IiIZKE0dERBP1YIRGUyVAR8TgS4COiGieXt5J2DTTFKCFpek59RijM+rJB8Az6slnZF49+QBsnlPfX/ZWs+rryVm83ZO15TVvxsZa8rn3xy+uJR+ATSP1/LH36q9Po8MZoVODjojBljboiIjmShNHRERTJUBHRDRTatAREU2VAB0R0UDOrd4REY2UcdAREU3m4YzQCdARMfBe0DVoSfcDTwObgZHxZsWNiKjVEN+oMpE5CQ+0vW+Cc0Q0jUarLVPKQzpG0ipJoy3zDCJpN0k/aZmP8KwOx28v6RpJd5f/LuyWZyaNjYiBV0eAppiF+2jg+jb77ikrsPvaPqXD8R8Evm57T+Dr5fq4qgZoA1dLukXSsorHRERMP1N0ElZZppKNvdr2XVM4xZHA+eXr84G3djugaifhAbbXlVOJXyPpTts/8y1SBu5lALPnLqhe5IiIKZpAJ+EiSStb1pfbXt6DIuwu6VbgKeDPbf9bmzQ72n4IwPZDZTwdV6UAbXtd+e8jklYA+zGmml9e5HKAbRbuOqRN9hHRSNUjzvrx+tEkXQvs1GbX6bYv6XDYQ8BLbT8q6ReBf5K0t+2nKpeqg64BWtI8YCvbT5evDwU+NNWMIyJ6oZc3qtg+ZBLHbAA2lK9vkXQP8Epg5ZikP5S0c1l73hl4pNu5q7RB7wjcIOk7wE3A5bavnNAVRERMFxuNVlumg6QdJM0oX+8B7Anc2ybppcAJ5esTgE418ud0rUHbvhfYp3JpIyLqVkOjqqSjgL8DdgAul3Sb7cOANwEfkjRCca/IKbYfK485BzjL9krgr4GvSDoJ+AFwTLc8cydhRAy8Ou4ktL0CWNFm+8XAxR2OObnl9aPAwRPJMwE6IgabgcxJGBHRUMMZnxOgI2LwvaAflhQR0WTTNUKj3xKgI2KwDfHT7BKgI2KgFTeqDGeEToCOiMGXOQknSNN25v7kA7imvDRSTz4AnlFfXqqxJ8d1fVjA5be9tpZ8Xr/XPbXkM4hSg46IaKK0QUdENNX0PWej3xKgI2LwpYkjIqKB3JPprBopAToiBl9q0BERDTWc8TkBOiIGn0aHs40jAToiBpvJjSoREU0kPLQ3qlSZkxBJCyRdJOlOSasl7T/dBYuIqMyutgyYSgEa+DRwpe1XU8xPuHr6ihQRMUE1BGhJx0haJWlU0tKW7e+UdFvLMipp3zbHnyHpwZZ0R3TLs2sTh6T5FJMivhvA9kZg40QuLCJi2tTXBn0HcDRw9s9kb18AXAAg6eeBS2zf1uEcn7L9iaoZVmmD3gP4EfAFSfsAtwDvtf1MayJJy4BlALPnLqiaf0TElNUxisP2agBp3AdxHQd8qVd5VmnimAn8AvA5268DngE+ODaR7eW2l9peOmvrbXpVvoiILio2b9TTBv12xg/Qp0q6XdJ5khZ2O1mVAL0WWGv7xnL9IoqAHRHRf2YiAXqRpJUty7LWU0m6VtIdbZYjuxVD0uuBZ23f0SHJ54CXA/sCDwFndjtn1yYO2w9LekDSq2zfBRwMfK/bcRERtanewrHe9tJOO20fMoVSHMs4tWfbP9zyWtLngcu6nbDqOOg/AC6QNBu4F3hPxeMiIqZdv8dBS9oKOIZiQEWnNDvbfqhcPYqi03FclQJ02SPZ8VsnIqKvagjQko4C/g7YAbhc0m22Dyt3v4miKfjeMcecA5xleyXw8XL4nYH7gd/plmfuJIyIwWbD5lpGcawAVnTYdx3whjbbT255ffxE80yAjojBN4B3CVaRAB0Rgy8BOiKigQxkTsKIiCYyeDifN5oAHRGDzdTSSdgPCdARMfjSBh0R0VAJ0NU988Ta9f9+8Z9+f4KHLQLWT0d5+mwYr6vx13Tf5A5r9HX9YHKHNfqagJdN/RSD+TD+KqYlQNveYaLHSFo53j3yg2oYr2sYrwmG87qG8Zqex0AmjY2IaKjUoCMimqieW737oUkBenm/CzBNhvG6hvGaYDivaxiv6WcZPKTjoOUh/WkQES8M283cwfvPf2ultFc9fs4tg9Qm36QadETE5AxpRTMBOiIGmz20oziqzEk4rSQdLukuSWskPW8y2kEkaVdJ35C0WtIqSe/td5l6RdIMSbdK6jpdz6CQtEDSRZLuLD+z/ftdpl6Q9Efl398dkr4kaU6/yzRtmjNpbE/1NUBLmgF8Bvg1YC/gOEl79bNMPTIC/Intn6N4iPfvD8l1AbwXWN3vQvTYp4Erbb8a2IchuD5Ji4E/BJbafg0wg2LOvCFkvHlzpWXQ9LsGvR+wxva9tjcCFwJdZ89tOtsP2f52+fppiv/hF/e3VFMnaQnw68A5/S5Lr0iaTzFd0bkAtjfafqK/peqZmcBcSTOBFwHr+lye6bHlcaNVlgHT7wC9GHigZX0tQxDIWknaDXgdcGN/S9ITfwu8n4nModx8ewA/Ar5QNt2cI2levws1VbYfBD5BcYf4Q8CTtq/ub6mmkUerLQOm3wFabbYN3tdcB5K2AS4G3mf7qX6XZyokvRl4xPYt/S5Lj80EfgH4nO3XAc8AA98XImkhxa/R3YFdgHmSfru/pZoeBjzqSstUSPqbsp/idkkrJC1o2Xda2Y92l6TDOhy/u6QbJd0t6cuSZnfLs98Bei2wa8v6EobkZ5ikWRTB+QLbX+13eXrgAOAtku6naIo6SNIX+1uknlhLMRvzll84F1EE7EF3CHCf7R/Z3gR8FXhjn8s0Pey6atDXAK+x/VrgP4HTAMr+pWOBvYHDgc+W/WtjfQz4lO09gceBk7pl2O8AfTOwZ/nNMpviIi/tc5mmTJIo2jRX2/5kv8vTC7ZPs73E9m4Un9O/2B74Gpnth4EHJL2q3HQw8L0+FqlXfgC8QdKLyr/HgxmCzs9O6ugktH217ZFy9VsUFUoofqlcaHuD7fuANRT9a88pP4ODKCoAAOcDXe+u6es4aNsjkk4FrqLoZT7P9qp+lqlHDgCOB74r6bZy25/ZvqKPZYrO/gC4oKwk3Au8p8/lmTLbN0q6CPg2xaiiWxnS276f5vGrrvVFiyomnyNpZcv6ctuTeV9OBL5cvl5MEbC3aNeX9mLgiZYAX6m/re83qpRBa6gCl+0baN++PhRsXwdc1+di9Izt24CBuf23Ktt/Cfxlv8sx3Wwf3qtzSboW2KnNrtNtX1KmOZ3iS++CLYe1K9bYU1dI8zx9D9AREU1h+5Dx9ks6AXgzcLB/+iCjKn1p64EFkmaWtehK/W39boOOiBgIkg4HPgC8xfazLbsuBY6VtLWk3YE9gZtajy2D+TeAt5WbTgAu6ZpnnmYXEdGdpDXA1sCj5aZv2T6l3Hc6Rbv0CMWw2q+V268ATra9TtIeFCOgtqfoE/ht2xvGzTMBOiKimdLEERHRUAnQERENlQAdEdFQCdAREQ2VAB0R0VAJ0BERDZUAHRHRUP8fPy9t+9ge64sAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Sarsa 算法 输出 argmax_a Q(S,a)\n",
    "def Sarsa_Qm(alpha, gamma, eps, width, height, wind, action_all, G, S_start, iterations, rand_move=False):\n",
    "    Q = {}\n",
    "    for i in range(height):\n",
    "        for j in range(width):\n",
    "            actions = [a for a in action_all if check_action(\n",
    "                width, height, (i, j), a)]\n",
    "            for a in actions:\n",
    "                if (i, j) == G:\n",
    "                    Q[(i, j), a] = 0\n",
    "                else:\n",
    "                    Q[(i, j), a] = random.random()\n",
    "    step_list = [0]\n",
    "    for it in range(iterations):\n",
    "        S = (random.randint(0, height-1), random.randint(0, width-1))\n",
    "        step = 0\n",
    "        while True:\n",
    "            if S == G:\n",
    "                break\n",
    "            if step == 0:\n",
    "                A = eps_greedy(width, height, S, action_all, eps, Q)\n",
    "            S_ = move(width, height, S, A, wind, rand_move)\n",
    "            R = -1\n",
    "            A_ = eps_greedy(width, height, S_, action_all, eps, Q)\n",
    "            Q[(S, A)] = Q[(S, A)]+alpha*(R+gamma*Q[(S_, A_)]-Q[(S, A)])\n",
    "            S, A = S_, A_\n",
    "            step += 1\n",
    "        step_list.append(step_list[-1]+step)\n",
    "    Qm = []\n",
    "    for i in range(height):\n",
    "        Qm.append([])\n",
    "        for j in range(width):\n",
    "            actions = [a for a in action_all if check_action(\n",
    "                width, height, (i, j), a)]\n",
    "            Qm[-1].append(max([Q[(i, j), a] for a in actions]))\n",
    "    return Qm\n",
    "\n",
    "\n",
    "wind = [0, 0, 0, 1, 1, 1, 2, 2, 1, 0]\n",
    "G = (3, 7)\n",
    "S_start = (3, 0)\n",
    "iterations = 20000\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0)]\n",
    "Qm = Sarsa_Qm(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.figure()\n",
    "plt.imshow(Qm, vmin = -18, vmax = 0)\n",
    "plt.colorbar()\n",
    "plt.title(\"example6.5 directions=4\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "Qm = Sarsa_Qm(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.figure()\n",
    "plt.imshow(Qm, vmin = -18, vmax = 0)\n",
    "plt.colorbar()\n",
    "plt.title(\"exercise6.9 directions=8\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1), (0, 0)]\n",
    "Qm = Sarsa_Qm(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations)\n",
    "plt.figure()\n",
    "plt.imshow(Qm, vmin = -18, vmax = 0)\n",
    "plt.colorbar()\n",
    "plt.title(\"exercise6.9 directions=9\")\n",
    "\n",
    "action_all = [(0, 1), (0, -1), (1, 0), (-1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]\n",
    "Qm = Sarsa_Qm(0.05, 1, 0.1, 10, 7, wind, action_all, G, S_start, iterations, rand_move=True)\n",
    "plt.figure()\n",
    "plt.imshow(Qm, vmin = -20, vmax = 0)\n",
    "plt.colorbar()\n",
    "plt.title(\"exercise6.10 directions=8\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "图中点的颜色越黄，说明该点到目标点所需的步数越少。\n",
    "\n",
    "第一张图是例6.5的结果，上风向处到达目标所需的步数更少，这是符合直觉的结论。\n",
    "\n",
    "第二、三张图是练习6.9的结果，二者几乎完全相同，说明原地不动是一个并没有什么用的操作。\n",
    "\n",
    "第四张图是练习6.10的结果，有趣的是，即使离目标点只有一步之遥，平均意义下仍需要多步才能到达，这归功于随机的风。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
